<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 生成器函数与异步任务：解决回调地狱问题
        // 模拟获取:用户 订单 商品

        function getUsers() {
            setTimeout(() => {
                data = '用户';
                iterator.next(data);
            }, 1000)
        }

        function getOrders() {
            setTimeout(() => {
                data = '订单';
                iterator.next(data);
            }, 1000)
        }

        function getGoods() {
            setTimeout(() => {
                data = '商品';
                iterator.next(data);

            }, 1000)
        }

        // 创建生成器函数
        function* gen() {
            let users = yield getUsers();
            console.log(users);
            let orders = yield getOrders();
            console.log(orders);
            let goods = yield getGoods();
            console.log(goods);
        }
        // 接收生成器的返回值：迭代器对象
        let iterator = gen();
        // 调用迭代器对象的next方法
        iterator.next();
    </script>
</body>

</html>